home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / ada / c01oop.zip / CPPWKBK / CPPV4-4.CPP < prev    next >
C/C++ Source or Header  |  1992-08-25  |  2KB  |  98 lines

  1. #define HEADER "C++ Problem 4.4 by Rick Conn using Borland C++"
  2.  
  3. #include <stdio.h>
  4. #include <time.h>
  5.  
  6. class time_stamp {
  7.   time_t stamp;
  8. public:
  9.   time_stamp();
  10.   ~time_stamp();
  11.   void showtime(void);
  12. };
  13.  
  14. time_stamp::time_stamp() {
  15.   time (&stamp);
  16.   printf("  Time_Stamp constructor called\n");
  17. }
  18.  
  19. time_stamp::~time_stamp() {
  20.   printf("  Time_Stamp destructor called\n");
  21. }
  22. void time_stamp::showtime(void) {
  23.   printf("Time Stamp: %s", ctime (&stamp));
  24. }
  25.  
  26. class message : private time_stamp {
  27.   char *msg;
  28. public:
  29.   message (char *);
  30.   ~message();
  31.   void print(void);
  32. };
  33.  
  34. message::message (char *m) {
  35.   msg = m;
  36.   printf("  Message constructor called\n");
  37. }
  38. message::~message() {
  39.   printf("  Message destructor called\n");
  40. }
  41. void message::print(void) {
  42.   printf("Message \"%s\"  ", msg);
  43.   showtime();
  44. }
  45.  
  46. class message2 : public time_stamp {
  47. protected:
  48.   char *msg;
  49. public:
  50.   message2 (char *);
  51.   ~message2();
  52.   void print(void);
  53. };
  54.  
  55. message2::message2 (char *m) {
  56.   msg = m;
  57.   printf("  Message2 constructor called\n");
  58. }
  59. message2::~message2() {
  60.   printf("  Message2 destructor called\n");
  61. }
  62. void message2::print(void) {
  63.   printf("Message2 \"%s\"  ", msg);
  64.   showtime();
  65. }
  66.  
  67. class priority_message : public message2 {
  68.   char *urgency;
  69. public:
  70.   priority_message (char *m, char *u);
  71.   ~priority_message();
  72.   void print(void);  // includes urgency info
  73. };
  74.  
  75. priority_message::priority_message (char *m, char *u) :
  76.   message2(m) {
  77.     urgency = u;
  78.     printf("  Priority_Message constructor called\n");
  79. }
  80. priority_message::~priority_message() {
  81.   printf("  Priority_Message destructor called\n");
  82. }
  83. void priority_message::print(void) {
  84.   printf("Urgency %s: %s  -- ", urgency, msg);
  85.   showtime();
  86. }
  87.  
  88. void main(void)
  89. {
  90.   printf("%s\n", HEADER);
  91.  
  92.   priority_message pm1("This is a test", "Routine");
  93.   priority_message pm2("Em Situation", "Emergency");
  94.  
  95.   pm1.print();
  96.   pm2.print();
  97. }
  98.